home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok56 / m2maker / txt / timersupport.mod < prev    next >
Text File  |  1993-11-04  |  4KB  |  132 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.    m2Maker
  3.   :Author.     Thomas Stolze
  4.   :Address.    Goslarsche Str. 32, 3000 Hannover 21, Germany
  5.   :Phone.      (0)511 / 75 10 77
  6.   :Version.    V2.0
  7.   :Date.       13-Nov-90
  8.   :Copyright.  Shareware
  9.   :Language.   Modula-2
  10.   :Translator. M2Amiga V4.0d
  11.   :Contents.   Programming Utility.
  12.   :Remark.     Supports the M2Amiga System (C) by A+L AG Switzerland
  13.   :LastUpdate. 03-JUN-91
  14. ---------------------------------------------------------------------------*)
  15.  
  16. IMPLEMENTATION MODULE TimerSupport;
  17.  
  18. FROM Arts            IMPORT Assert;
  19. FROM Conversions     IMPORT ValToStr;
  20. FROM DosD            IMPORT Date;
  21. FROM DosL            IMPORT DateStamp;
  22. FROM DosL            IMPORT Delay;
  23. FROM DateConversions IMPORT DateInfo,DateToStr,FromDos,month3;
  24. FROM ExecD           IMPORT IOStdReq,IOStdReqPtr,MemReqs,MemReqSet,MsgPortPtr,
  25.                             TaskPtr,LibraryPtr;
  26. FROM ExecL           IMPORT AvailMem,CloseDevice,DoIO,Forbid,
  27.                             OpenDevice,Permit,Enable,Disable,OpenLibrary,
  28.                             CloseLibrary;
  29. FROM ExecSupport     IMPORT CreateExtIO,CreatePort,CreateTask,DeleteExtIO,
  30.                             DeletePort;
  31. FROM GraphicsD       IMPORT jam2,RastPortPtr;
  32. FROM GraphicsL       IMPORT Move,SetAPen,SetBPen,SetDrMd,Text;
  33. FROM InitIntuition   IMPORT prgPtr;
  34. FROM IntuitionL      IMPORT ActivateWindow;
  35. FROM RequesterWindow IMPORT version;
  36. FROM String          IMPORT Concat,Length;
  37. FROM SYSTEM          IMPORT ADR,LONGSET;
  38. FROM Timer           IMPORT addRequest,IOTimer,IOTimerPtr,timerName,vBlank;
  39.  
  40. VAR msgTimerPort : MsgPortPtr;
  41.     adrIOTimer   : IOTimerPtr;
  42.     task         : TaskPtr;
  43.     exit         : BOOLEAN;
  44.  
  45. PROCEDURE PrintHeadLine;
  46. VAR headline : ARRAY [0..80] OF CHAR;
  47.  
  48.   PROCEDURE MakeHeadLine(VAR str : ARRAY OF CHAR);
  49.   VAR date : Date;
  50.       info : DateInfo;
  51.       print: ARRAY [0..10] OF CHAR;
  52.       err  : BOOLEAN;
  53.       mem  : INTEGER;
  54.  
  55.     PROCEDURE freeMemory(memory : MemReqSet): INTEGER;
  56.     VAR bytes : LONGINT;
  57.     BEGIN
  58.       bytes:=AvailMem(memory); RETURN bytes DIV 1024;
  59.     END freeMemory;
  60.  
  61.   BEGIN
  62.     DateStamp(ADR(date)); FromDos(date,info);
  63.     DateToStr(info,"  %d.%t.%y  %H:%M:%S ",month3,str);
  64.  
  65.     mem:=freeMemory(MemReqSet{fast});
  66.       ValToStr(mem,FALSE,print,10,4," ",err);
  67.       Concat(str,'   F:'); Concat(str,print); Concat(str,'K C:');
  68.     mem:=freeMemory(MemReqSet{chip});
  69.       ValToStr(mem,FALSE,print,10,4," ",err);
  70.       Concat(str,print); Concat(str,'K ');
  71.   END MakeHeadLine;
  72.  
  73.   PROCEDURE Print(text       : ARRAY OF CHAR;
  74.                    rport     : RastPortPtr;
  75.                    fPen,bPen : INTEGER;
  76.                    xpos,ypos : INTEGER);
  77.   BEGIN
  78.      SetAPen(rport,fPen); SetBPen(rport,bPen); SetDrMd(rport,jam2);
  79.      Move(rport,xpos,ypos); Text(rport,ADR(text),Length(text));
  80.   END Print;
  81.  
  82. BEGIN
  83.   Forbid();
  84.     headline:=(""); MakeHeadLine(headline);
  85.     Print(version ,prgPtr^.window^.rPort,3,1,30, 7);
  86.     IF prgPtr^.window^.width > 550 THEN
  87.        Print(headline,prgPtr^.window^.rPort,2,1,148,7);
  88.     END;
  89.   Permit();
  90. END PrintHeadLine;
  91.  
  92. (*$LoadA4:=TRUE*)
  93. PROCEDURE TimerTask;
  94. BEGIN
  95.   msgTimerPort:=CreatePort(NIL,0);
  96.   IF msgTimerPort # NIL THEN
  97.      adrIOTimer:=CreateExtIO(msgTimerPort,SIZE(IOTimer));
  98.  
  99.      OpenDevice(ADR(timerName),vBlank,adrIOTimer,LONGSET{});
  100.      exit:=FALSE;
  101.  
  102.      REPEAT
  103.        adrIOTimer^.node.command:=addRequest;
  104.        adrIOTimer^.time.secs:=1;
  105.        adrIOTimer^.time.micro:=0;
  106.  
  107.        DoIO(adrIOTimer);
  108.  
  109.        PrintHeadLine;
  110.  
  111.      UNTIL exit;
  112.  
  113.      CloseDevice(adrIOTimer);
  114.      DeleteExtIO(adrIOTimer);  adrIOTimer:=NIL;
  115.      DeletePort(msgTimerPort); msgTimerPort:=NIL;
  116.   END;
  117.   task:=NIL;
  118. END TimerTask;
  119.  
  120. PROCEDURE InitTimer;
  121. BEGIN
  122.   task:=NIL; task:=CreateTask(ADR("m2Maker_Timer"),1,ADR(TimerTask),2048);
  123. END InitTimer;
  124.  
  125. BEGIN
  126.   InitTimer;
  127.  
  128. CLOSE
  129.   REPEAT exit:=TRUE; Delay(2) UNTIL task = NIL;
  130. END TimerSupport.
  131.  
  132.